/**
 * 给定一个长度为 n 的整数 山脉 数组 arr ，其中的值递增到一个 峰值元素 然后递减。
 * <p>
 * 返回峰值元素的下标。
 * <p>
 * 你必须设计并实现时间复杂度为 O(log(n)) 的解决方案。
 * <p>
 * 示例 1：
 * <p>
 * 输入：arr = [0,10,5,2]
 * 输出：1
 */
class Solution {
    public int peakIndexInMountainArray(int[] arr) {
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] > arr[i + 1]) {
                return i;
            }
        }
        return 0;
    }

    //二分查找优化代码
    public int peakIndexInMountainArray2(int[] arr) {
        int left = 0;
        int right = arr.length-1;

        while(left < right){
            int mid = (left+right)/2;

            if(arr[mid]<arr[mid+1]){   //说明峰值在右边
                left = mid+1;
            }else{
                right = mid;
            }
        }
        //当left = right 的时候找到峰值索引
        return left;
    }
}